bitkeeper revision 1.1159.1.81 (41238d2cHqbklCcCkVBI3g3Q45Y0dg)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Wed, 18 Aug 2004 17:09:00 +0000 (17:09 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Wed, 18 Aug 2004 17:09:00 +0000 (17:09 +0000)
Fix dom_mem_op properly. :-)

xen/common/dom_mem_ops.c

index 1f61c240fa39c929a3acd9dd861afab92e9b6da5..483097f261d4d98958d1b9ed83e1d7030b361d37 100644 (file)
@@ -98,8 +98,11 @@ long do_dom_mem_op(unsigned int   op,
     struct domain *d;
     long           rc;
 
-    d = ( (domid == DOMID_SELF) || (!IS_PRIV(current)) ) ? current : find_domain_by_id(domid);
-    if ( d == NULL )
+    if ( likely(domid == DOMID_SELF) )
+        d = current;
+    else if ( unlikely(!IS_PRIV(current)) )
+        return -EPERM;
+    else if ( unlikely((d = find_domain_by_id(domid)) == NULL) )
        return -ESRCH;
 
     switch ( op )
@@ -115,7 +118,7 @@ long do_dom_mem_op(unsigned int   op,
         break;
     }
 
-    if ( domid != DOMID_SELF )
+    if ( unlikely(domid != DOMID_SELF) )
        put_domain(d);
 
     return rc;